﻿using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using Microsoft.SharePoint;
using System.Linq;
using System.Collections.Generic;
using System.Text;

namespace TIT.ABDI.ChamadosTI.VWPRelatorioChamado
{
    public partial class VWPRelatorioChamadoUserControl : UserControl
    {
        SPWeb myWeb = SPContext.Current.Web;
        IFormatProvider culture = new System.Globalization.CultureInfo("pt-BR", true);

        protected void Page_Load(object sender, EventArgs e)
        {
            CarregarRepeaters();
        }

        private void CarregarRepeaters()
        {
            List<SPListItem> ListaChamado = myWeb.Lists["Chamado"].Items.Cast<SPListItem>().ToList();

            SetRptRelatorioChamadoTotal(ListaChamado);
            SetLabelRelatorioChamadoDiario(ListaChamado);
        }

        private void SetRptRelatorioChamadoTotal(List<SPListItem> ListaChamado)
        {
            try
            {
                var Chamados = ListaChamado.Select(p => new { Status = p["Situacao"].ToString() });

                var Relatorio = from u in Chamados
                                group u by u.Status into g
                                select new { Status = g.Key, Quantidade = g.Count() };

                rptRelatorioChamado.DataSource = Relatorio.OrderByDescending(x => x.Quantidade);
                rptRelatorioChamado.DataBind();
            }
            catch (Exception e)
            {
                Response.Write("Erro ao Carregar Relatório Total de Chamados. Erro: " + e.Message);
            }
        }

        private void SetLabelRelatorioChamadoDiario(List<SPListItem> ListaChamado)
        {
            try
            {
                string DataHoje = DateTime.Now.ToShortDateString();

                var Chamados = ListaChamado
                    .Select(p => new
                    {
                        Status = new SPFieldLookupValue(p["Situacao"].ToString()).LookupValue,
                        CriadoEm = Convert.ToDateTime(p["Criado"]).ToShortDateString(),
                        ModificadoEm = Convert.ToDateTime(p["Modificado"]).ToShortDateString()
                    }).ToList();

                int QtdChamadosAbertos = Chamados.Where(i => i.Status == "Aberto" && i.CriadoEm == DataHoje).Count();
                int QtdChamadosConcluidos = Chamados.Where(i => i.Status.ToString() == "Concluído" && i.ModificadoEm == DataHoje).Count();

                StringBuilder sb = new StringBuilder();

                sb.Append("<fieldset class='fsChamadoRelatorioDiario'><legend>Relatório do dia " + DataHoje + "</legend><table class='chamadosRelatorio' >");
                sb.Append(@"<tr class='chamadoCabecalho'> <td style='width: 379px;'>Status</td>  <td style='width: 299px;'>Quantidade</td> </tr>");
                sb.Append(@"<tr class='ms-alternating'> <td class='ms-vb'>Aberto</td> <td class='ms-vb'>" + QtdChamadosAbertos + "</td>  </tr>");
                sb.Append(@"<tr> <td class='ms-vb'>Concluído</td> <td class='ms-vb'>" + QtdChamadosConcluidos + "</td>  </tr>");
                sb.Append(@"</table></fieldset>");

                lblQtdDiaria.Text = sb.ToString();
            }
            catch (Exception e)
            {
                Response.Write("Erro ao Carregar Relatório Diário. Erro: " + e.Message);
            }
        }
    }
}
